import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class XmlListInserter {

    /**
     * 在strings.XML文件中插入字符串列表，并在</resources>标签前插入。
     * @param filePath        XML文件路径
     * @param stringsToInsert 要插入的字符串列表
     */
    public static void insertStringsBeforeClosingTag(String filePath, List<String> stringsToInsert) throws IOException {
        Path inputPath = Paths.get(filePath);
        Path tempPath = Paths.get(filePath + ".temp");

        // 确保父目录存在, 否则创建父目录
        Path parentDir = inputPath.getParent();
        if (parentDir == null) throw new IllegalArgumentException("文件路径无效");
        if (Files.notExists(parentDir)) {
            Files.createDirectories(parentDir);
        }

        // 读取文件内容
        List<String> lines = Files.readAllLines(inputPath, StandardCharsets.UTF_8);

        //将stringsToInsert插入到lines中，并在</resources>标签前插入
        int index = lines.indexOf("</resources>");
        if (index == -1) {
            throw new IllegalArgumentException("文件中没有找到</resources>标签");
        }
        lines.addAll(index, stringsToInsert);

        // 写入临时文件
        Files.write(tempPath, lines, StandardCharsets.UTF_8);

        // 删除原文件并将临时文件重命名为原文件
        Files.delete(inputPath);
        Files.move(tempPath, inputPath);

    }
}
